(function(){
    class Person{
        name: string;
        age: number

        constructor(name: string, age: number){
            this.name = name;
            this.age = age;
        }
    }


    // const per  = new Person('张三',66)
    // console.log(per);
    // per.name = '李四'
    // console.log(per);
    /**
     * 上述方法中，属性是在对象中设置的，可以任意改变，导致对象变得不安全。
     *  
     */


    class MyPerson{
        /**
         * TS 可以在属性前添加修饰符
         * 
         * public 修饰的属性可以在任意位置访问（修改） 默认值
         * private 私有属性，私有属性只有在类的内部可以访问（修改）
         * protected 
         */



        private _name: string;
        private _age: number

        constructor(name: string, age: number){
            this._name = name;
            this._age = age;
        }

        get name(){
            return this._name
        }

        set name(value:string){
            this._name = value
        }

        get age(){
            return this._age
        }

        set age(value:number){
            this._age = value
        }
    }

    const p = new MyPerson('刘德华', 22)
    console.log(p);
    p.name = '张学友';
    console.log(p);
    p.age = 44;
    console.log(p);

    
})();